#!/usr/bin/env python
#-------------------------------python-----------------------archi.py--#
#                                                                      #
#                      Demo di circle e ccircle                        #
#                                                                      #
#--Daniele Zambelli----------------------------------------------2003--#

from random import random, randrange
from pyturtle import * 


# init
tina=Turtle()

def spostati(x, y):
  '''Trasla Tartaruga delle componenti x e y'''
  tina.up()
  tina.forward(x)
  tina.left(90)
  tina.forward(y)
  tina.right(90)
  tina.down()

def saltaacaso():
  '''Sposta casualmente Tartaruga all'interno del rettangolo
  di vertici (0, 0) e (600, 400)'''
  tina.up()
  tina.setpos((randrange(600)-300, randrange(400)-200))
  tina.down()

def coloraacaso():
  '''Assegna a Tartaruga un colore con componenti RGB casuali'''
  tina.setcolor(random(), random(), random())

def macchie(n):
  for j in range(n):
    saltaacaso()
    coloraacaso()
    tina.fill(1)
    tina.circle(randrange(100), randrange(360))
    tina.fill(0)

def cmacchie(n):
  for j in range(n):
    saltaacaso()
    coloraacaso()
    tina.fill(1)
    tina.ccircle(randrange(100), randrange(360))
    tina.fill(0)

def tricircle():
  '''Produce uno strano disegno'''
  tina.tracer(1)
  tina.setwidth(10)
  tina.fill(1)
  for i in range(3):
    tina.forward(100)
#    print tina.getpos()
    tina.right(90)
    tina.setcolor("green")
    tina.circle(30)
    tina.setcolor("black")
    tina.left(90)
    tina.back(80)
    tina.left(120)
  tina.setcolor("maroon")
  tina.fill(0)

# ccircle
def bersaglio():
  '''Disegna un bersaglio'''
  saltaacaso()
  stella(4, 5)
  larghezza=tina.getwidth()
  tina.setwidth(2)
  tina.ccircle(20)
  tina.setwidth(larghezza)
  tina.ccircle(10)
  return(tina.getpos())

def segmentocirc(r):
  tina.circle(r, 180)
  tina.left(90)
  tina.forward(r+r)
  tina.left(90)

def petalo(r):
  tina.right(45)
  tina.circle(r, 90)
  tina.left(90)
  tina.circle(r, 90)
  tina.left(135)
  
def sequenza1():
  coloraacaso()
  segmentocirc(50)   # semicerchio vuoto
  spostati(100, 0)
  coloraacaso()
  tina.fill(1)
  segmentocirc(50)   # semicerchio con
  coloraacaso()      # bordo e interno
  tina.fill(0)       # colorati
  spostati(100, 0)
  coloraacaso()
  tina.up()
  tina.fill(1)
  segmentocirc(50)   # semicerchio colorato
  coloraacaso()      # senza bordo
  tina.fill(0)
  tina.down()
  spostati(100, 0)
  tina.left(90)
  coloraacaso()
  petalo(70)         # petalo vuoto
  tina.right(90)
  spostati(100, 0)
  coloraacaso()
  tina.left(90)
  tina.fill(1)
  petalo(70)         # petalo con
  coloraacaso()      # bordo e interno
  tina.fill(0)       # colorati
  tina.right(90)
  spostati(100, 0)
  coloraacaso()
  tina.left(90)
  tina.up()
  tina.fill(1)
  petalo(70)         # petalo colorato
  coloraacaso()      # senza bordo
  tina.fill(0)
  tina.down()
  tina.right(90)

def settorecirc(r):
  tina.left(45)
  tina.ccircle(r, 90)
  tina.right(135)

def radio(r):
  for i in range(3):
    tina.ccircle(r, 60)
    tina.left(60)

def sequenza2():
  coloraacaso()
  settorecirc(50)    # settorecirc vuoto
  spostati(100, 0)
  coloraacaso()
  tina.fill(1)
  settorecirc(50)    # settorecirc con
  coloraacaso()      # bordo e interno
  tina.fill(0)       # colorati
  spostati(100, 0)
  coloraacaso()
  tina.up()
  tina.fill(1)
  settorecirc(50)    # settorecirc colorato
  coloraacaso()      # senza bordo
  tina.fill(0)
  tina.down()
  spostati(100, 0)
  tina.left(90)
  coloraacaso()
  radio(50)          # radio vuoto
  tina.right(90)
  spostati(100, 0)
  coloraacaso()
  tina.left(90)
  tina.fill(1)
  radio(50)          # radio con
  coloraacaso()      # bordo e interno
  tina.fill(0)       # colorati
  tina.right(90)
  spostati(100, 0)
  coloraacaso()
  tina.left(90)
  tina.up()
  tina.fill(1)
  radio(50)          # radio colorato
  coloraacaso()      # senza bordo
  tina.fill(0)
  tina.down()
  tina.right(90)


def main():
  global tina
  macchie(50)
  tina=Turtle()
  cmacchie(50)
  tina=Turtle()
  tricircle()
  tina=Turtle()
  spostati(-250, 98)
  tina.setwidth(3)
  sequenza1()
  spostati(-500, -200)
  sequenza2()

if __name__ == "__main__": main()
